1. Field of the Invention
The present invention relates to client/server architectures and in particular to techniques and structures for reducing resource hogging of server resources by clients on a computing node.
2. Discussion of Related Art
Client/server software architectures are common in modern computing applications. In such architectures one or more client processes issues requests to a server process for particular services. The server process performs the desired service and returns status and/or requested data to the requesting client process.
Such client/server architectures are at the heart of most distributed computing applications. Client processes and the server process may be physically dispersed among the plurality of computing devices interconnected via networked computing media. Client processes generate requests for service and transmit the request to an appropriate server process via the network communication media. The server process receives such requests via the network communication media, performs appropriate processing, and returns any required data or status via the same network communication media.
The Internet is a well-known network where distributed computing applications that utilize client/server architectures are common. Client processes such as Web browsers, chat programs, file transfer programs, etc. issue requests and transmit those requests via the Internet network communication media to identified server processes. At some potentially remote location, a server process receives the Web, chat, file transfer, etc. request, processes the request, and returns appropriate status and/or data to the client process. Often the client process is associated with a particular user and a user may generate a plurality of such clients. For example, a user may spawn multiple Web browser clients or file transfer (“FTP”) clients to process multiple requests in parallel from the users computing node.
Often in such client/server applications, a single server process is responsible for servicing requests from a large number of client processes. For example, in the Internet, a single Web server node may service requests from literally thousands if not millions of Web browser client processes. It is possible in such client/server architectures for a single user to overutilize resources of a single server process. A single user could generate multiple client processes for requesting the services of the single server process. Such a user may then receive a disproportionate share of the resources of the single server process as compared to other users generating requests via a single client process. As used herein, “user” may mean a single human operator or may simply refer to a collection of related processes. Another term often used for such collections of related processes is a “session.” In other words, a single session may overutilize or “hog” scarce resources of one or more server processes.
Exemplary of such resource hogging is a computer security problem often referred to as a “denial of service” attack. Where one or more sessions intentionally overutilize resources of a single server, other sessions (users) may be denied the services of that server process. For example, if a single interactive user initiates a large number of Web browser client processes requesting information from the same Web site (sometimes serviced by a single server process), other legitimate users may be denied adequate service by that same Web server. Likewise, a single user initiating a large number of file transfer client processes denies other users the capability of requesting file transfers from that same file transfer server process.
It is evident from the above discussion that a need exists for improved capabilities to limit resource hogging by particular identified sessions in such client/server architectures. In particular, a need exists to reduce resource hogging in file transfer protocols often used in distributed computing architectures.